package com.append.design.simplefactory;

public class PizzaStore {

	SimplePizzaFactory factory; // SimplePizzaFactory的引用

	public PizzaStore(SimplePizzaFactory factory) {
		this.factory = factory;
	}

	public Pizza orderPizza(String type) {
		Pizza pizza;
		pizza = factory.createPizza(type); // 使用工厂对象的创建方法，而不是直接new。这里不再使用具体实例化

		pizza.prepare();
		pizza.bake();
		pizza.cut();
		pizza.box();

		return pizza;
	}

	/**
	 * 简单工厂模式又称之为静态工厂方法，属于创建型模式。 在简单工厂模式中，可以根据传递的参数不同，返回不同类的实例。
	 * 简单工厂模式定义了一个类，这个类专门用于创建其他类的实例，这些被创建的类都有一个共同的父类。
	 * 
	 * 
	 * @author lijin
	 * @param args
	 * @time 2018年5月14日 下午4:35:32
	 */
	public static void main(String[] args) {
		SimplePizzaFactory sf = new SimplePizzaFactory();
		PizzaStore ps = new PizzaStore(sf);
		ps.orderPizza("cheese");
	}
}
